package com.longcai.fenzhuang.fuyou;

import com.longcai.constants.SplitConstant;

/***
 * 富友 请求参数生成签名
 */
public class RequestSigna {

	/****
	 * 获取企业开户签名的方法
	 * @param artifNm 法人姓名  
	 * @param bankLicense 开户银行许可证号
	 * @param MchntCd
	 * @param MchntTxnSsn
	 * @param bankNm 开户行支行名称
	 * @param brandName	品牌名称
	 * @param capacntno 帐号
	 * @param certifId 设置法人证件号
	 * @param cityId 开户行地区代码
	 * @param taxNum 税务登记号
	 * @param licenseIndate 营业执照有效期
	 * @param custNm 企业名称
	 * @param ver
	 * @return
	 */
	public String getAddUserSigna(String artifNm,String bankLicense,String MchntCd,String MchntTxnSsn,String bankNm,String brandName,String capacntno,String certifId,String cityId,String taxNum,String licenseIndate,String custNm,String ver){
		String str =artifNm + "|"
				+ bankLicense+ "|" 
				+ MchntCd+ "|" 
				+ MchntTxnSsn + "|" 
				+ bankNm + "|"
				+ brandName + "|"
				+ capacntno + "|"
				+ certifId + "|"
				+ cityId + "|"
				+ taxNum + "|"
				+ licenseIndate + "|"
				+ custNm + "|" + ver;
		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**
	 * 获取个人/小微企业开户签名
	 * @param artifNm 户名
	 * @param mchntCd 商户代码
	 * @param mhntTxnSsn 请求流水号
	 * @param bankNm 开户行支行名称
	 * @param certifId  证件号码
	 * @param cityId  开户行地区代码
	 * @param mobileNo 手机号码
	 * @param ver 接口版本号
	 * @return
	 */
	public String getSmallUserSigna(String artifNm,String mchntCd,String  mhntTxnSsn,String bankNm,String certifId,String cityId,String mobileNo,String ver){
		String str =artifNm +"|" 
				+ mchntCd+ "|"
				+ mhntTxnSsn +"|"
				+bankNm+  "|"
				+certifId+ "|"
				+ cityId+ "|"
				+ mobileNo+"|"+ver;

		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}


	/** 获取银行卡变更签名
	 * 
	 * @param artifNm 户名
	 * @param bankLicense 开户银行许可证号
	 * @param MchntCd 商户代码
	 * @param MchntTxnSsn 商户流水
	 * @param LoginId 用户id
	 * @param capacntno 账号
	 * @param parentBankId 开户行行别
	 * @param cityId 开户地区代码
	 * @param userType 用户类型
	 * @param mobileNo 手机号
	 * @return
	 */
	public String getUpdateUserSigna(String artifNm,String bankLicense,String MchntCd,String MchntTxnSsn,String LoginId,String capacntno,String parentBankId,String cityId,String userType,String mobileNo){
		String str =artifNm +"|" 
				+ bankLicense+ "|"
				+ MchntCd +"|"
				+MchntTxnSsn+  "|"
				+LoginId+ "|"
				+ capacntno+ "|"
				+ parentBankId+"|"
				+cityId+"|"
				+userType+"|"
				+mobileNo;

		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**
	 * 获取分账接口签名
	 * @param mchntCd  商户代码
	 * @param splitSsn 分账编号
	 * @param mchntTxnNum 交易流水号
	 * @return
	 */
	public String getFenZhangPortSigna(String mchntCd,String splitSsn,String  mchntTxnNum ){
		String str =mchntCd +"|" 
				+ splitSsn+ "|"
				+ mchntTxnNum ;

		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**获取分账导入签名
	 * 
	 * @param mchntCd 商户代码
	 * @param autoSplit 自动分账
	 * @return
	 */
	public String getFzImportSigna(String mchntCd,String autoSplit){
		String str =mchntCd +"|" 
				+ autoSplit ;

		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**获取提现签名
	 * 
	 * @param mchntCd 商户代码
	 * @param loginId 用户id
	 * @param amt 提现金额
	 * @param pageNotifyUrl 商户返回地址
	 * @param backNotifyUrl 商户后台通知地址
	 * @param ver 接口版本号
	 * @return
	 */
	public String getCashSigna(String mchntCd,String loginId,String amt,String pageNotifyUrl,String backNotifyUrl,String ver ){
		String str =mchntCd+"|"
				+loginId+"|"
				+amt+"|"
				+pageNotifyUrl+"|"
				+ backNotifyUrl+ "|"
				+ver ;
		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**
	 * 获取网银充值签名
	 * @param mchntCd 商户代码
	 * @param loginId 用户id
	 * @param amt 提现金额
	 * @param pageNotifyUrl 商户返回地址
	 * @param backNotifyUrl 商户后台通知地址
	 * @return
	 */
	public String getNetRechareSigna(String mchntCd,String loginId,String amt,String pageNotifyUrl,String backNotifyUrl ){
		String str =mchntCd+"|"
				+loginId+"|"
				+amt+"|"
				+pageNotifyUrl+"|"
				+ backNotifyUrl;
		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**获取线上支付签名
	 * 
	 * @param intoAccount 入账户
	 * @param mchntTxnSsn 	商户流水
	 * @param mchntCd 商户代码
	 * @param paymentType 支付方式
	 * @param termIp 终端ip
	 * @param amt 交易金额
	 * @return
	 */
	public String getLineRechareSigna(String intoAccount,String mchntTxnSsn,String mchntCd,String paymentType,String termIp,String amt ){
		String str =intoAccount+"|"
				+mchntTxnSsn+"|"
				+mchntCd+"|"
				+paymentType+"|"
				+ termIp+"|"
				+amt;
		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**
	 * 获得普通支付（余额支付）签名
	 * @param paymentType 支付类型
	 * @param channel 交易来源
	 * @param outAccount 出账户id
	 * @param intoAccount 入账户id
	 * @param accountNm 户名
	 * @param parentBankId 开户行行别代码
	 * @param parentBankName 开户行名称
	 * @param bankCardNo 卡号
	 * @param amt 交易金额
	 * @param protocolNum 协议号（支付类型为 02 时必填 ）
	 * @param purpose 交易用途
	 * @param goodsType 商品类型 
	 * @param subject 商品名称
	 * @param goodsDes 商品描述 
	 * @param goodsQuanity 商品数量
	 * @param splitSsn 分账账号
	 * @param splitType 直接分账
	 * @param backNotifyUrl 通知url
	 * @param mchntCd 商户代码
	 * @param mchntTxnSsn 商户流水
	 * @param ver 接口版本号
	 */
	public String CommonPaySigna(String paymentType,String channel,String outAccount,String intoAccount,String accountNm,String parentBankId,String parentBankName,String bankCardNo,String amt,String protocolNum,String purpose,String goodsType,String subject,String goodsDes,String goodsQuanity,String splitSsn,String splitType,String backNotifyUrl,String mchntCd,String mchntTxnSsn,String ver ){
		String str =paymentType+"|"+channel+"|"+outAccount+"|"+intoAccount+"|"+accountNm+"|"+parentBankId+
				"|"+parentBankName+"|"+bankCardNo+"|"+amt+"|"+protocolNum+"|"+purpose+"|"+goodsType+
				"|"+subject+"|"+goodsDes+"|"+goodsQuanity+"|"+splitSsn+"|"+splitType+"|"+backNotifyUrl+
				"|"+mchntCd+"|"+mchntTxnSsn+"|"+ver;
		System.out.println(str+"加密前");
		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**
	 * 获取普通支付（验证码验证）第二步签名
	 * @param paymentType 支付类型
	 * @param mchntTxnNum 原流水号
	 * @param smsCode 验证码
	 * @param mchntCd 商户代码
	 * @param mchntTxnSsn 商户流水
	 * @param ver 接口版本
	 * @return
	 */
	public String CommonPayStep2Signa(String paymentType,String mchntTxnNum,String smsCode,String mchntCd,String mchntTxnSsn,String ver){
		String str =paymentType+"|"
				+mchntTxnNum+"|"
				+smsCode+"|"
				+mchntCd+"|"
				+mchntTxnSsn+"|"
				+ver;
		System.out.println(str+"加密前");
		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**获取退款请求签名
	 *
	 * @param mchntCd 商户代码
	 * @param mchntTxnNum 原流水号
	 * @param amt 订单金额
	 * @param refundAmt 退款金额
	 * @param mchntTxnSsn 商户流水
	 * @return
	 */
	public String getRefundSigna(String mchntCd,String mchntTxnNum,String amt,String refundAmt,String mchntTxnSsn){
		String str =mchntCd+"|"+mchntTxnNum+"|"+amt+"|"+refundAmt+"|"+ mchntTxnSsn;
		System.out.println(str+"加密前");
		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**获取交易查询请求签名
	 * 
	 * @param mchntCd 商户代码
	 * @param custNo 交易用户
	 * @param payType 支付类型
	 * @return
	 */
	public String getTradeSearchSigna(String mchntCd,String custNo,String payType){
		String str =mchntCd+"|"+custNo+"|"+payType;
		System.out.println(str+"加密前");
		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	/**微信订单请求签名
	 * 
	 * @param mchntCd 商户代码
	 * @param custNo 交易用户
	 * @param paymentType 支付类型
	 * @param orderType 订单类型	
	 * @param tradeType 交易类型
	 * @param mchntTxnNum 原交易账单号
	 * @param startDay 起始日期
	 * @param endDay 结束日期
	 * @param mchntTxnSsn 商户流水
	 * @param ver 接口版本
	 * @return
	 */
	public String getWeiXinOrderSigna(String mchntCd,String custNo,String paymentType,String orderType,String tradeType,String mchntTxnNum,String startDay,String endDay,String mchntTxnSsn,String ver){
		String str =mchntCd+"|"+custNo+"|"+paymentType+"|"+orderType+"|"+tradeType+"|"+mchntTxnNum+"|"+startDay+"|"+endDay+"|"+mchntTxnSsn+"|"+ver;
		System.out.println(str+"加密前");
		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
	public String getBalanceSearchSigna(String mchntCd,String custNo,String paymentType,String orderType,String tradeType,String mchntTxnNum,String startDay,String endDay,String mchntTxnSsn,String ver){
		String str =mchntCd+"|"+custNo+"|"+paymentType+"|"+orderType+"|"+tradeType+"|"+mchntTxnNum+"|"+startDay+"|"+endDay+"|"+mchntTxnSsn+"|"+ver;
		System.out.println(str+"加密前");
		return FuiouRsaCipher.sign2Base64(SplitConstant.PRI_SIGN_KEY, str);
	}
}
